﻿Imports System.Data
Imports System.Data.SqlClient

Public Class DestinatarioDAL

    Sub New()

    End Sub

    Function inserir(des_logradouro As String, des_complemento As String, des_numero As String, des_bairro As String, des_cep As String, des_nome As String) As Integer
        Dim cmd As New SqlCommand
        Dim objD As New Dados
        Dim codigo As Integer
        Try

            'Comando para inserção de dados no banco
            cmd.CommandText = "INSERT INTO destinatario (des_logradouro, des_complemento,des_numero, des_bairro, des_cep,des_nome)" & _
                              " VALUES (@des_logradouro, @des_complemento,@des_numero, @des_bairro, @des_cep,@des_nome)"

            'Parâmetros de entrada
            cmd.Parameters.Add(New SqlParameter("@des_logradouro", SqlDbType.VarChar)).Value = des_logradouro
            cmd.Parameters.Add(New SqlParameter("@des_complemento", SqlDbType.VarChar)).Value = des_complemento
            cmd.Parameters.Add(New SqlParameter("@des_numero", SqlDbType.VarChar)).Value = des_numero
            cmd.Parameters.Add(New SqlParameter("@des_bairro", SqlDbType.VarChar)).Value = des_bairro
            cmd.Parameters.Add(New SqlParameter("@des_cep", SqlDbType.VarChar)).Value = des_cep
            cmd.Parameters.Add(New SqlParameter("@des_nome", SqlDbType.VarChar)).Value = des_nome

            'Execução da inserção com retorno do valor da chave primária
            codigo = objD.executacomandoAI(cmd, "destinatario")

        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
        Return codigo
    End Function


    Sub alterar(codigo As Integer, des_logradouro As String, des_complemento As String, des_numero As String, des_bairro As String, des_cep As String, des_nome As String)
        Dim cmd As New SqlCommand
        Dim objD As New Dados

        Try

            'Comando para atualização de dados no banco
            cmd.CommandText = "UPDATE destinatario SET pes_codigo = @pesCodigo, des_codigo = @desCodigo" & _
                " tc_codigo = @tcCodigo, seg_codigo = @segCodigo, car_protocolo=@protocolo ,car_peso = @carPeso" & _
                " WHERE car_codigo = @codigo"

            'Parâmetros de entrada
            cmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.Int)).Value = codigo
            cmd.Parameters.Add(New SqlParameter("@des_logradouro", SqlDbType.VarChar)).Value = des_logradouro
            cmd.Parameters.Add(New SqlParameter("@des_complemento", SqlDbType.VarChar)).Value = des_complemento
            cmd.Parameters.Add(New SqlParameter("@ des_numero", SqlDbType.VarChar)).Value = des_numero
            cmd.Parameters.Add(New SqlParameter("@ des_numero", SqlDbType.VarChar)).Value = des_numero
            cmd.Parameters.Add(New SqlParameter("@des_bairro", SqlDbType.VarChar)).Value = des_bairro
            cmd.Parameters.Add(New SqlParameter("@des_cep", SqlDbType.VarChar)).Value = des_cep

            'Execução da alteração
            objD.executacomando(cmd)
        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
    End Sub

    Sub excluir(ByVal codigo As Integer)
        Dim cmd As New SqlCommand
        Dim objD As New Dados
        Try
            'Comando para exclusão de um registro no banco
            cmd.CommandText = "DELETE FROM Destinatario WHERE des_codigo = @codigo"

            'Parâmetro de comparação
            cmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.Int)).Value = codigo

            'Execução do comando
            objD.executacomando(cmd)
        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
    End Sub

    Function localizar(ByVal codigo As Integer) As DataTable
        Dim cmd As New SqlCommand
        Dim objD As New Dados
        Dim tab As DataTable = Nothing
        Try
            'Comando para localizar vários registros no banco
            cmd.CommandText = "SELECT * FROM Destinatario WHERE des_codigo = @codigo"

            'Parâmetro de entrada
            cmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.Int)).Value = codigo

            'Execução do comando
            tab = objD.executaConsulta(cmd)

        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
        Return tab
        tab = Nothing
    End Function

    Function localizar(ByVal descricao As String) As DataTable
        Dim cmd As New SqlCommand
        Dim objD As New Dados
        Dim tab As DataTable = Nothing
        Try
            If (descricao = "ultimo") Then
                cmd.CommandText = "SELECT des_codigo = max(des_codigo) FROM Destinatario "
            ElseIf (descricao = "primeiro") Then
                cmd.CommandText = "SELECT car_codigo = min(des_codigo) FROM Destinatario "

            Else
                'Comando para localizar vários registros no banco
                cmd.CommandText = "SELECT * FROM Destinatario WHERE des_codigo like @descricao"

                'Parâmetro de entrada
                cmd.Parameters.Add(New SqlParameter("@descricao", SqlDbType.VarChar)).Value = descricao + "%"
            End If
            'Execução do comando
            tab = objD.executaConsulta(cmd)

        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
        Return tab
        tab = Nothing
    End Function

    Function localizarProxAnterior(ByVal descricao As String, ByVal codigo As Integer) As DataTable
        Dim cmd As New SqlCommand
        Dim objD As New Dados
        Dim tab As DataTable = Nothing
        Try
            If (descricao = "proximo") Then
                cmd.CommandText = "SELECT des_codigo FROM Destinatario WHERE des_codigo = (SELECT MIN(des_codigo) FROM Destinatario WHERE des_codigo > @codigo)"
            ElseIf (descricao = "anterior") Then
                cmd.CommandText = "SELECT des_codigo FROM Destinatario WHERE des_codigo = (SELECT MAX(des_codigo) FROM Destinatario WHERE des_codigo < @codigo)"
            End If
            'Parâmetro de entrada
            cmd.Parameters.Add(New SqlParameter("@codigo", SqlDbType.Int)).Value = codigo
            'Execução do comando
            tab = objD.executaConsulta(cmd)

        Catch ex As Exception
            Throw ex
        End Try
        cmd = Nothing
        objD = Nothing
        Return tab
        tab = Nothing
    End Function

End Class
